package com.encode.huffman;

import java.util.List;

/**
 * @Author lichunlong lcl253137@alibaba-inc.com
 * @Desc 霍夫曼编码Facade门面
 * @Date 2025-03-30
 */
public class HuffmanCodeFacade {

    /**
     * 霍夫曼编码
     *
     * @param byteArray 字节数组
     * @return 编码后的字节数组
     */
    public static byte[] encode(byte[] byteArray) {
        // 1、将Byte字节数组转换成霍夫曼节点集合
        List<HuffmanNode> huffmanNodeList = HuffmanCode.initNodeList(byteArray);
        // 2、创建赫夫曼树
        HuffmanNode huffmanTreeRootNode = HuffmanCode.createHuffmanTree(huffmanNodeList);
        // 3、创建霍夫曼编码表
        HuffmanCode.initHuffmanCodeTable(huffmanTreeRootNode);
        // 4、进行霍夫曼编码
        return HuffmanCode.encode(byteArray);
    }
}
